/**
  * Author: Mei
  * Date: 2020-12-03 20:07
  * Description: 
  *
  */
#include <iostream>
#include <memory>

using namespace std;

int main() {
    //unique_ptr<string> p1(new string("hi,world")); // 必须采用直接初始化的形式初始化
    //auto p2 = unique_ptr<string>();
    //unique_ptr<string> p2(p1); // ❌ 不支持拷贝
    //unique_ptr<string> p3;
    //p3 = p2; // ❌ 不支持赋值

    unique_ptr<string> p1(new string("hi"));
    unique_ptr<string> p2(p1.release()); // 将p1置为空，返回指针
    cout << *p2 << endl;
    unique_ptr<string> p3(new string("hello,world"));
    p2.reset(p3.release()); // reset释放了p2原来指向的内存 然后令p2指向p3所指向的对象，然后release()将p3置为空
    //cout << *p3 << endl; // 输出的都是hi
    cout << *p1 << endl; // p1已经被释放了，没有了

    return 0;
}